home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / cfengine-1.5.3 / README.install < prev    next >
Encoding:
Text File  |  1999-10-15  |  12.2 KB  |  336 lines

  1. CFENGINE
  2. --------
  3.  
  4. Cfengine is a tool for setting up and maintaining BSD and System-5-like
  5. operating system optionally attached to a TCP/IP network.  You can think
  6. of cfengine as a very high level language---much higher level than Perl
  7. or shell: a single statement can result in many hundreds of operations
  8. being performed on multiple hosts. Cfengine is good at performing a lot
  9. of common system administration tasks, and allows you to build on its
  10. strengths with your own scripts. You can also use it as a netwide
  11. front-end for @code{cron}.  Once you have set up cfengine, you'll be
  12. free to use your time being like a human being, instead of playing R2-D2
  13. with the system.
  14.  
  15. The main purpose of cfengine is to allow you to create a single, central
  16. system configuration which will define how every host on your network
  17. should be configured in an intuitive way.  An interpreter runs on every
  18. host on your network and parses the master file (or file-set); the
  19. configuration of each host is checked against this file and then, if you
  20. request it, any deviations from the defined configuration are fixed
  21. automatically.  You do not have to mention every host specifically by
  22. name in order to configure them : instead you can refer to the
  23. properties which distinguish hosts from one another.  Cfengine uses a
  24. flexible system of ``classes'' which helps you to single out a specific
  25. group of hosts with a single statement.
  26.  
  27. Cfengine is written and maintained by Mark Burgess, who is very glad to
  28. receive all of the feeback about cfengine, but has less and less time
  29. to work on cfengine.
  30.  
  31. Bug reports to bug-cfengine@prep.ai.mit.edu (News: gnu.cfengine.bug)
  32. General help to help-cfengine@prep.ai.mit.edu (News: gnu.cfengine.help)
  33. Info & fixes at http://www.iu.hioslo.no/~mark/cfengine.html
  34.  
  35. INSTALLATION
  36. ------------
  37.  
  38. To compile this program, you simply follow the standard GNU configure rules.
  39. At its simpleist, to build and install CFEngine in /usr/local, this would be:
  40.  
  41. configure
  42. make
  43. make install
  44.  
  45. There are many options to configure which you can see by giving it the
  46. "--help" argument.  A typical argument is the "--prefix" which will setup
  47. CFEngine to be installed in a directory other than /usr/local.
  48.  
  49. You may also build CFEngine from a different directory (say /objdir) than the
  50. one containing the source (say /srcdir) by doing the following (note that
  51. this hasn't been significantly tested):
  52.  
  53. mkdir /objdir
  54. cd /objdir
  55. /srcdir/configure
  56. make
  57. make install
  58.  
  59. NOTE: the documentation is not built and installed by default.  The configure 
  60. script will attempt to determine what tools you have (Tex, Latex, Makeinfo)
  61. and setup doc/Makefile to build everything it can.  However, you may want to
  62. look at what doc/Makefile will do before attempting to run make in that
  63. directory.  If you are satisfied with what doc/Makefile will do, then you can 
  64. just do "make install" in the doc directory.
  65.  
  66. If you have a reasonably complete installation of one of the supported
  67. operating systems, you should not have any problem compiling the software.
  68.  
  69. Bug reports/info/comments to: bug-cfengine@gnu.ai.mit.edu
  70.  
  71. Latest update news on: http://www.iu.hioslo.no/~mark/cfengine.html
  72.  
  73. Latest patches: ftp.iu.hioslo.no
  74.  
  75. I reply to all messages that are sent to me, but occasionally I get messages
  76. which I cannot reply to because of errors in the return address. If you don't
  77. receive a reply within a couple of weeks, then you should assume that I was
  78. unable to do so.
  79.  
  80. PROBLEMS FINDING SHARED LIBRARIES
  81. ----------------------------------
  82.  
  83. The auto configure script is not smart enough to find shared
  84. libraries which do not have a corresponding archive library (.a).
  85. This applies to solaris machines with libthread and libdce for
  86. instance. If configure reports that you do not have these libraries
  87. you need to edit the file config.cache after configure has run
  88. and change 'no' to 'yes' for the relevant libraries, then
  89. do a make.
  90.  
  91.  
  92. INSTALLING A NEW VERSION / UPGRADING
  93. ------------------------------------
  94.  
  95. Cfengine does not compile any names based on your choice of
  96. prefix into its code, so when you collect a new version, you
  97. don't *have* to compile with the correct prefix and run
  98. make install. It should be sufficient to do:
  99.  
  100. configure
  101. make
  102. cp src/cfengine DESTINATION
  103.  
  104. Version 1.4 and beyond
  105. -----------------------
  106.  
  107. In this version of cfengine, it is useful to have the tcp-wrappers package
  108. in order to secure access control for network services.
  109.  
  110. Note that some linux and NetBSD systems have corrupt TCPwrapper libraries
  111. (libwrap) which create unresolved function references at *RUN TIME*
  112. but which appear to compile correctly. Test your compilation before
  113. installing by writing
  114.  
  115.   src/cfengine -p -v
  116.  
  117. If you experience this problem, try removing the -lwrap option from
  118. the Makefile and undefining HAVE_TCPD_H, HAVE_LIBWRAP.
  119.  
  120.  
  121. NOTE 1.4.*
  122. -----------
  123.  
  124.  Before installing this verison, add the following line to your /etc/services
  125.  file
  126.  
  127.   cfengine        5308/tcp
  128.  
  129.  
  130. PROBLEMS/TROUBLESHOOTING
  131. ------------------------
  132.  
  133. Although every effort has been made to make the compilation of cfengine
  134. trouble free, you might still encounter some problems where non-standard
  135. features are concerned. The differences between systems is still a major
  136. headache.
  137.  
  138. It is known, for instance, that versions of gcc after 2.7.0 have a malloc
  139. bug which causes a segmentation fault during parsing. This will not
  140. necessarily show up on all systems. It appears to affect solaris.XF
  141.  
  142. Earlier versions of the GNU/Linux operating system do not have support
  143. for some of the facilities which cfengine uses.  In particular, the
  144. ability to use NIS netgroups is absent from earlier versions.  During
  145. the installation procedure, the @code{configure} script tests for this
  146. possibility and advises you if the facility cannot be used.  You can
  147. still use cfengine in this case but netgroups will not be expanded.
  148. Another problem with GNU/Linux concerns a special socket call to the
  149. TCP/IP network interface.  This is a command which configures the static
  150. routing table and appears to be absent from all versions of Linux and
  151. newer IRIX versions.  There are also problems with NetBSD.  These
  152. features are undocumented and will be fixed as soon as they have been
  153. understood! If you are running in verbose mode a warning message is
  154. printed, otherwise cfengine will ignore attempts to set a default route
  155. on the system.
  156.  
  157.  
  158. A number of users have experienced a problem using flex and bison
  159. in place of lex and yacc. There appears to be a bug in one of these
  160. programs which causes cfengine to compile correctly but misinterpret
  161. its configuration files, generating an error of the form
  162.  
  163. cfengine:10:action contains invalid statement
  164.  
  165. for every line! The cure is to collect the latest versions
  166. of flex and bison from your nearest GNU site.
  167.  
  168. On really old systems, the configure program is not able to guess
  169. what kind of system you are working on. This is true of SunOS 
  170. versions 4.0.* and also of BSD 4.3 systems. In such cases, you might
  171. be able to compile cfengine by using the autoconf option `host'
  172. to specify the host-type.
  173.  
  174. configure --host=sparc-sun-sunos4.0
  175.  
  176. Some other systems which will compile if forced are:
  177.  
  178. m68k-hp-bsd4.3
  179. ?-?-bsd4.3
  180. romp-ibm-aos
  181. ?-?-aos
  182.  
  183. On BSDI systems, the configure program fails due to differences
  184. in the shell. Here is a fix, straight from the horses mouth!
  185. ==BEGIN=====================
  186.  
  187. Mark,
  188.  
  189.    To correct this for BSDI I replaced the following script fragment from
  190. configure:
  191.  
  192. -------------------------------------------------------------------------
  193. #
  194. # Add to the default list of places in LDFLAGS to compensate for
  195. # ... the configure default value of LIBS on some systems
  196. #
  197. for x in /usr/local/gnu/lib /usr/local/gnulib /usr/local/lib /usr/lib /lib
  198. do
  199.   if test -d "$x"; then
  200.     y=`expr match "$LDFLAGS" ".*-L$x"`
  201.     if test $y -eq 0; then
  202.       LDFLAGS="$LDFLAGS -L$x"
  203.     fi
  204.   fi
  205. done
  206.  
  207. #
  208. # Add to the default list of places in CPPFLAGS to match LDFLAGS above
  209. #
  210. for x in /usr/include /usr/local/gnu/include /usr/local/include
  211. do
  212.   if test -d "$x"; then
  213.     y=`expr match "$CPPFLAGS" ".*-I$x"`
  214.     if test $y -eq 0; then
  215.       CPPFLAGS="$CPPFLAGS -I$x"
  216.     fi
  217.   fi 
  218. done
  219. ------------------------------------------------------------------------
  220.  
  221.    With this script fragment, which successfully executed:
  222.  
  223. ------------------------------------------------------------------------
  224.  
  225. #
  226. # Add to the default list of places in LDFLAGS to compensate for
  227. # ... the configure default value of LIBS on some systems
  228. #
  229. for x in /usr/local/gnu/lib /usr/local/gnulib /usr/local/lib /usr/lib /lib
  230. do
  231.   if test -d "$x"; then
  232.     case $LDFLAGS in
  233.     .*-L$x)
  234.       LDFLAGS="$LDFLAGS -L$x"
  235.       ;;
  236.     esac
  237.   fi
  238. done
  239.    
  240. #
  241. # Add to the default list of places in CPPFLAGS to match LDFLAGS above
  242. #
  243. for x in /usr/include /usr/local/gnu/include /usr/local/include
  244. do
  245.   if test -d "$x"; then
  246.     case $CPPFLAGS in
  247.     .*-I$x)
  248.       CPPFLAGS="$CPPFLAGS -I$x"
  249.       ;;
  250.     esac
  251.   fi
  252. done
  253. -----------------------------------------------------------------------
  254.  
  255.  
  256. ==END=======================
  257.  
  258. On some systems, problems arise when using flex. Flex might
  259. generate a lexer file lex.yy.c which defines malloc or some other
  260. function to be of a type which conflicts with the system definition.
  261. If you obtain such a culture crash, edit the lexer file manually
  262. and simply delete the offending definitions, then run make again.
  263.  
  264. As of version 1.4.0 cfengine tries to link in features based on the
  265. Berkeley database library @file{libdb} and the TCP wrappers library
  266. @file{libwrap}.  If you want to use these facilities, you will have to
  267. collect them and install them before compiling cfengine.  Some
  268. problems have been experienced with the linux version of TCP
  269. wrappers. If you experience compilation problems, the best thing to do
  270. is to edit @file{src/conf.h} after configuration and remove the line
  271. beginning @samp{#define HAVE_LIBWRAP}.
  272.  
  273. Newer solaris systems have ACLs. The ACL features only matured in version
  274. 2.5 of solaris however, and there have been some problems with the
  275. partial implementation in 2.4. If you obtain error messages about unknown
  276. ACL functions, edit the @file{config.cache} file in the cfengine root
  277. directory and set the value:
  278.  
  279. ac_cv_header_sys_acl_h=${ac_cv_header_sys_acl_h='no'}
  280.  
  281.  
  282. If you use the DCE (Distributed computing environment) cfengine will try to
  283. compile the ACL extension for DFS. This requires the DCE library to be present
  284. on the system on which you are compiling. On some systems it also requires
  285. thread libraries to be present. Unfortunately, the autoconf program
  286. which generates the Makefiles cannot detect shared libraries, only archive
  287. libraries. This means that you need to edit the @file{config.cache} file
  288. to compile in this support. Set the following values:
  289.  
  290. ac_cv_lib_dce_main=${ac_cv_lib_dce_main='yes'}
  291. ac_cv_lib_dce_main=${ac_cv_lib_thread_main='yes'}
  292.  
  293.  
  294. --------------------------------------------------------------------
  295.  
  296. Problems compiling on IRIX
  297.  
  298. Subject: [1.4.10] with gcc-2.8.0 on irix6.x
  299.     Date: 24 Feb 1998 16:53:02 GMT
  300.       To: gnu-cfengine-bug@prep.ai.mit.edu
  301.  
  302.  
  303. gcc-2.8.0 produces '-n32' formatted object files, which need to be linked
  304. with libraries in /usr/lib32.  The linker finds /usr/lib or /usr/lib32
  305. according to the formats it finds, unless an explicit -L/usr/lib is
  306. applied.  For this reason, it is disastreous to add -L/usr/lib as it forces
  307. the linker to take the libraries with -o32 objects
  308.  
  309. Here is a rough-and-ready patch which got 1.4.9 and 1.4.10 to build
  310. properly for me.
  311.  
  312. --- benedict
  313.  
  314. --- cfengine-1.4.9.orig/configure.in    Wed Dec 24 11:43:45 1997
  315. +++ cfengine-1.4.9/configure.in    Wed Feb  4 09:33:24 1998
  316. @@ -16,7 +16,7 @@
  317.  # Add to the default list of places in LDFLAGS to compensate for
  318.  # ... the configure default value of LIBS on some systems
  319.  #
  320. -for x in /usr/local/gnu/lib /usr/local/gnulib /usr/local/lib /usr/lib /lib
  321. +for x in /usr/local/gnu/lib /usr/local/gnulib /usr/local/lib
  322.  do
  323.    if test -d "$x"; then
  324.      y=`expr match "$LDFLAGS" ".*-L$x"`
  325.  
  326. --
  327. Benedict Lofstedt     <blofstedt@daimi.aau.dk>
  328. Computer Science Department, Aarhus University,   Fax: + 45 8942 3255
  329. Ny Munkegade, DK-8000 Aarhus C, Denmark.        Phone: + 45 8942 3222
  330.  
  331.  
  332. Mark Burgess
  333.  
  334. 12/12/97
  335.  
  336.